﻿using System;
using System.Runtime.Serialization;
using NCMIS.ObjectModel.MetaData;

namespace NCMIS.Produce
{
    /// <summary>
    /// Specifies how non-direct ACEs can be handled by the repository.
    /// </summary>
    [DataContract(Namespace = CmisNs.Cmis)]
    public enum AclPropagation
    {
        /// <summary>
        ///  Indicates that the repository has its own mechanism of computing how changing an ACL for an object influences the
        ///  non-direct ACEs of other objects.
        /// </summary>
        [EnumMember(Value = "repositorydetermined")]
        RepositoryDetermined,

        /// <summary>
        /// Indicates that the repository is able to apply ACEs to a document or folder, without changing the ACLs of other
        /// objects.
        /// </summary>
        [EnumMember(Value = "objectonly")]
        ObjectOnly,

        /// <summary>
        /// Indicates that the ACEs is to be applied to the given object and all inheriting objects.
        /// </summary>
        [EnumMember(Value = "propagate")]
        Propagate,
    }
}
